global_cflags = ARGUMENTS.get('CFLAGS', '-Wall -Wextra -O2 -fomit-frame-pointer')
global_cxxflags = ARGUMENTS.get('CXXFLAGS', global_cflags + ' -fno-exceptions -fno-rtti')
global_defines = ' -DHAVE_STDINT_H -DCHAR_WIDTH_8'

env = Environment(CPPPATH = ['src', 'include', '../common'],
                  CFLAGS = global_cflags + global_defines,
                  CXXFLAGS = global_cxxflags + global_defines)

sourceFiles = Split('''
			src/bitmap_font.cpp
			src/colorconversion.cpp
			src/cpu.cpp
			src/gambatte.cpp
			src/initstate.cpp
			src/interrupter.cpp
			src/memory.cpp
			src/rtc.cpp
			src/sound.cpp
			src/state_osd_elements.cpp
			src/statesaver.cpp
			src/video.cpp
			src/sound/channel1.cpp
			src/sound/channel2.cpp
			src/sound/channel3.cpp
			src/sound/channel4.cpp
			src/sound/duty_unit.cpp
			src/sound/envelope_unit.cpp
			src/sound/length_counter.cpp
			src/video/basic_add_event.cpp
			src/video/break_event.cpp
			src/video/irq_event.cpp
			src/video/ly_counter.cpp
			src/video/lyc_irq.cpp
			src/video/m3_extra_cycles.cpp
			src/video/mode3_event.cpp
			src/video/mode0_irq.cpp
			src/video/mode1_irq.cpp
			src/video/mode2_irq.cpp
			src/video/sc_reader.cpp
			src/video/scx_reader.cpp
			src/video/sprite_mapper.cpp
			src/video/we_master_checker.cpp
			src/video/we.cpp
			src/video/wx_reader.cpp
			src/video/wy.cpp
			src/video/filters/catrom2x.cpp
			src/video/filters/catrom3x.cpp
			src/video/filters/kreed2xsai.cpp
			src/video/filters/maxsthq2x.cpp
			src/video/filters/maxsthq3x.cpp
		   ''')

conf = env.Configure()

if conf.CheckHeader('zlib.h') and conf.CheckLib('z'):
	sourceFiles.append('src/file/unzip/unzip.c')
	sourceFiles.append('src/file/unzip/ioapi.c')
	sourceFiles.append('src/file/file_zip.cpp')
else:
	sourceFiles.append('src/file/file.cpp')

conf.Finish()

env.Library('gambatte', sourceFiles)
